home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs36.d81 / vdcdemo.arc / VDCSOURCE.TXT < prev   
Text File  |  2009-10-10  |  21KB  |  443 lines

  1.                 1
  2.                 2    * ┬Y ─ALE ╥AY
  3.                 3    * ─.╥┴┘1 ON ╟┼NIE
  4.                 4    * ─ALE ╥AY ON ╒╙ ┬╠╒┼╙ ┬┬╙
  5.                      * (219) 762-4612 OR (219) 887-2206
  6.                 5    * ╞IDO-╬ET 1:230/11
  7.                 6
  8.                 7    * ╓─├ PROGRAMMING
  9.                 8    * INCLUDES ROUTINES TO SELECT
  10.                 9    * A DIFFERENT SCREEN TO DISPLAY
  11.                 10   * TO SAVE THE CONTENTS OF A WINDOW
  12.                 11   * TO A BUFFER IN BANK ONE
  13.                 12   * AND TO INITIALIZE 64K ╓─├ RAM
  14.                 13
  15.                 14            ╧╥╟   $1300
  16.                 15
  17.                 16   ╥┼┴─╥┼╟  =     $├──┴
  18.                 17   ╫╥╔╘┼╥┼╟ =     $├─├├
  19.                 18   ╙├╥╧╥╟   =     $├├5┬
  20.                 19   ╙├╘╧╨    =     $┼5
  21.                 20   ╙├╠╞     =     $┼6
  22.                 21   ├╠╥      =     $51╞8
  23.                 22   ╙╘┴╠╧╬╟  =     $╞╞77
  24.                 23   ╠─┴╠╧╬╟  =     $╞╞74
  25.                 24   ╔╬╔╘80   =     $├┼0├
  26.                 25
  27.                 26   * ╘HESE ADDRESSES ARE USED BY THE SCREEN EDITOR
  28.                 27   * TO DETERMINE WHERE TO WRITE IN ╓─├ MEMORY
  29.                 28   * WHEN YOU PRINT ANYTHING.
  30.                 29   * ╘HEY ARE NOT UPDATED WHEN YOU CHANGE THE ADDRESSES
  31.                 30   * HELD IN THE VDC REGISTERS. ┘OU MUST CHANGE THESE
  32.                 31   * YOURSELF. ╘HIS MAKES IT POSSIBLE TO BE WRITING
  33.                 32   * TO A NON ACTIVE SCREEN.
  34.                 33
  35.                 34   ╓═3      =     $┴2┼       ;STARTING PAGE VDC CHAR ADDRESS
  36.                 35   ╓═4      =     $┴2╞       ;STARTING PAGE VDC ATTR ADDRESS
  37.                 36
  38.                 37   * ╨OINTER TO BUFFER AREA TO STORE
  39.                 38   * WINDOW CONTENTS
  40.                 39
  41.                 40   ╨╧╔╬╘╠╧  =     $╞┴
  42.                 41   ╨╧╔╬╘╚╔  =     $╞┬
  43.                 42
  44.                 43   * THIS ROUTINE CHANGES THE ADDRESS
  45.                 44   * THAT THE VDC CHIP ADDRESSES AS THE
  46.                 45   * CURRENT DISPLAY
  47.                 46   * CALL WITH  SYS 4864,A
  48.                 47   * A= THE HI BYTE OF THE VDC RAM ADDRESS
  49.                 48   * YOU WANT TO BE ACTIVE
  50.                 49
  51. 1300: 8─ ├╞ 14  50            ╙╘┴   ╙├┴──╥
  52. 1303: ┴2 0├     51            ╠─╪   #$0├       ;SET REGISTER 12
  53. 1305: 20 ├├ ├─  52            ╩╙╥   ╫╥╔╘┼╥┼╟
  54. 1308: ┴9 00     53            ╠─┴   #$00
  55. 130┴: ┼8        54            ╔╬╪              ;SET REG 13
  56. 130┬: 20 ├├ ├─  55            ╩╙╥   ╫╥╔╘┼╥┼╟
  57. 130┼: ┴─ ├╞ 14  56            ╠─┴   ╙├┴──╥
  58. 1311: 18        57            ├╠├
  59. 1312: 69 08     58            ┴─├   #$08
  60. 1314: ┴2 14     59            ╠─╪   #$14       ;SET REGISTER 20
  61. 1316: 20 ├├ ├─  60            ╩╙╥   ╫╥╔╘┼╥┼╟
  62. 1319: ┴9 00     61            ╠─┴   #$00
  63. 131┬: ┼8        62            ╔╬╪              ;SET REG 21
  64. 131├: 20 ├├ ├─  63            ╩╙╥   ╫╥╔╘┼╥┼╟
  65. 131╞: 60        64            ╥╘╙
  66. 1320: ┼┴        65            ╬╧╨
  67. 1321: ┼┴        66            ╬╧╨
  68. 1322: ┼┴        67            ╬╧╨
  69.                 68
  70.                 69   * ┬ECAUSE YOU MAY WANT TO WRITE TO A NON ACTIVE SCREEN
  71.                 70   * THIS IS A SEPERATE ROUTINE. ┘OU CAN CHANGE THE ADDRESS
  72.                 71   * HERE WITHOUT CHANGING THE VDC REGISTERS. ╘HE SYNTAX
  73.                 72   * IS SYS 4899,A.
  74.                 73   * A = HI BYTE OF VDC CHARACTER INFO
  75.                 74   * IF YOU CHANGE THE VALUES IN THE ╓─├ REGISTERS
  76.                 75   * THE SCREEN EDITOR WON'T PRINT ON THAT SCREEN
  77.                 76   * UNTIL YOU RESET THESE ADDRESSES.
  78.                 77
  79. 1323: 8─ 2┼ 0┴  78            ╙╘┴   ╓═3
  80. 1326: 18        79            ├╠├
  81. 1327: 69 08     80            ┴─├   #$08
  82. 1329: 8─ 2╞ 0┴  81            ╙╘┴   ╓═4
  83. 132├: 60        82            ╥╘╙
  84. 132─: ┼┴        83            ╬╧╨
  85. 132┼: ┼┴        84            ╬╧╨
  86. 132╞: ┼┴        85            ╬╧╨
  87.                 86
  88.                 87   * MOVE STRING STORAGE HI POINT DOWN TO
  89.                 88   * ALLOCATE BUFFER AREA IN BANK ONE
  90.                 89   * FOR STORAGE OF WINDOW AREA CONTENTS
  91.                 90   * ALSO PLACES HI AND LO BYTE OF BUFFER
  92.                 91   * AREA INTO ┬╒╞╞╠╧ AND ┬╒╞╞╚╔
  93.                 92   * THIS MUST BE CALLED BEFORE USING THE REST OF
  94.                 93   * THE ROUTINE TO SET THE BUFFER AREA ADDRESS
  95.                 94   * CALL WITH SYS 4912,A,X
  96.                 95   * A=LO BYTE OF ADDRESS
  97.                 96   * X=HI BYTE OF ADDRESS
  98.                 97
  99. 1330: 85 39     98            ╙╘┴   $39
  100. 1332: 8─ ─┴ 14  99            ╙╘┴   ┬╒╞╞╠╧
  101. 1335: 86 3┴     100           ╙╘╪   $3┴
  102. 1337: 8┼ ─┬ 14  101           ╙╘╪   ┬╒╞╞╚╔
  103. 133┴: 20 ╞8 51  102           ╩╙╥   ├╠╥
  104. 133─: 60        103           ╥╘╙
  105.                 104
  106.                 105  * THIS ROUTINE SAVES/RECALLS THE CONTENTS
  107.                 106  * OF A WINDOW ON THE 80 COL SCREEN
  108.                 107  * THE DATA IS STORED IN A BUFFER IN
  109.                 108  * BANK ONE. CALL WITH SYS 4926,A
  110.                 109  * IF A=0 THEN THE LAST WINDOW DEFINED
  111.                 110  * WILL BE SAVED. IF A=1 THEN THE CONTENTS
  112.                 111  * WILL BE RESTORED.
  113.                 112
  114.                 113  * ╞LAG FOR READ/WRITE
  115.                 114
  116.                 115  ╞╠┴╟     =     $╞├        ;0 MEANS READ
  117.                 116                            ;1 MEANS WRITE
  118.                 117
  119. 133┼: 85 ╞├     118           ╙╘┴   ╞╠┴╟       ;SET FLAG BY MOVING ACC THERE
  120.                 119
  121.                 120  * THIS ROUTINE RESTORES THE POINTER TO THE BUFFER
  122.                 121  * AREA TO THE START OF THE BUFFER EACH TIME
  123.                 122  * THE ROUTINE IS CALLED
  124.                 123
  125. 1340: ┴─ ─┴ 14  124           ╠─┴   ┬╒╞╞╠╧
  126. 1343: 85 ╞┴     125           ╙╘┴   ╨╧╔╬╘╠╧
  127. 1345: ┴─ ─┬ 14  126           ╠─┴   ┬╒╞╞╚╔
  128. 1348: 85 ╞┬     127           ╙╘┴   ╨╧╔╬╘╚╔
  129.                 128
  130.                 129  * CHECK FOR READ OR WRITE OPERATION
  131.                 130
  132. 134┴: ┴9 00     131           ╠─┴   #$00       ;PUT ZERO IN ACC
  133. 134├: ├5 ╞├     132           ├═╨   ╞╠┴╟       ;COMPARE THE ZERO TO FLAG
  134. 134┼: ╞0 04     133           ┬┼╤   ╙╘┴╥╘      ;IF ZERO THEN START ROUTINE
  135. 1350: 20 ╞2 13  134           ╩╙╥   ╥┼╙╘╧╥┼    ;IF NOT RESTORE WINDOW CONTENTS
  136. 1353: 60        135           ╥╘╙              ;RETURN WHEN DONE RESTORING
  137.                 136
  138.                 137  * ╟ET ├HARACTER AND ┴TTRIBUTE STARTING ADDRESS
  139.                 138  * ╘HIS IS THE ADDRESS OF THE HOME POSITION WITH
  140.                 139  * A FULL WINDOW
  141.                 140
  142. 1354: ┴2 0├     141  ╙╘┴╥╘    ╠─╪   #$0├       ;SELECT REGISTER 12
  143. 1356: 20 ─┴ ├─  142           ╩╙╥   ╥┼┴─╥┼╟    ;READ HI BYTE OF CHAR ADDRESS
  144. 1359: 8─ ─0 14  143           ╙╘┴   ├╚┴╥╚╔     ;STORE HI BYTE
  145. 135├: ┴2 0─     144           ╠─╪   #$0─       ;SELECT REGISTER 13
  146. 135┼: 20 ─┴ ├─  145           ╩╙╥   ╥┼┴─╥┼╟    ;READ LO BYTE OF CHAR ADDRESS
  147. 1361: 8─ ─1 14  146           ╙╘┴   ├╚┴╥╠╧     ;STORE LO BYTE
  148.                 147
  149. 1364: ┴2 14     148           ╠─╪   #$14       ;SELECT REGISTER 20
  150. 1366: 20 ─┴ ├─  149           ╩╙╥   ╥┼┴─╥┼╟    ;READ HI BYTE OF ATTR ADDRESS
  151. 1369: 8─ ─2 14  150           ╙╘┴   ┴╘╘╥╚╔     ;STORE HI BYTE
  152. 136├: ┴2 15     151           ╠─╪   #$15       ;SELECT REGISTER 21
  153. 136┼: 20 ─┴ ├─  152           ╩╙╥   ╥┼┴─╥┼╟    ;READ LO BYTE OF ATTR ADDRESS
  154. 1371: 8─ ─3 14  153           ╙╘┴   ┴╘╘╥╠╧     ;STORE LO BYTE
  155.                 154
  156.                 155  * ├OMPUTE STARTING ADDRESS OF CHARACTER AND ATTRIBUTE INFO
  157.                 156  * FOR CURRENT WINDOW'S HOME POSITION
  158.                 157  * ╘HIS SETS THE ADDRESSES TO THE START OF THE FIRST ROW
  159.                 158  * OF THE WINDOW
  160.                 159
  161. 1374: ┴9 00     160           ╠─┴   #$00       ;PUT ZERO IN ACCUMULATOR
  162. 1376: ├5 ┼5     161           ├═╨   ╙├╘╧╨      ;IF SCREEN TOP EQUALS ZERO THEN
  163. 1378: ╞0 30     162           ┬┼╤   ┴──├╧╠     ;SKIP ROW INCREMENTING
  164.                 163
  165. 137┴: ┴2 00     164           ╠─╪   #$00       ;INITIALIZE COUNTER
  166. 137├: 18        165  ├╚┴╥╥╧╫  ├╠├              ;CLEAR CARRY
  167. 137─: ┴─ ─1 14  166           ╠─┴   ├╚┴╥╠╧
  168. 1380: 69 50     167           ┴─├   #$50       ;ADD DECIMAL 80 FOR EACH ROW
  169. 1382: 8─ ─1 14  168           ╙╘┴   ├╚┴╥╠╧     ;GREATER THAN 1 OF WINDOW
  170. 1385: ┴─ ─0 14  169           ╠─┴   ├╚┴╥╚╔     ;INCREMENT HI BYTE OF ADDRESS
  171. 1388: 69 00     170           ┴─├   #$00       ;IF CARRY SET
  172. 138┴: 8─ ─0 14  171           ╙╘┴   ├╚┴╥╚╔
  173. 138─: ┼8        172           ╔╬╪              ;INCREMENT COUNTER
  174. 138┼: ┼4 ┼5     173           ├╨╪   ╙├╘╧╨      ;IF COUNTER DOES NOT EQUAL THE
  175. 1390: ─0 ┼┴     174           ┬╬┼   ├╚┴╥╥╧╫    ;SCREEN TOP VALUE THEN GO BACK
  176.                 175                            ;AND DO ANOTHER
  177.                 176
  178. 1392: ┴2 00     177           ╠─╪   #$00       ;RESET COUNTER
  179. 1394: 18        178  ┴╘╘╥╥╧╫  ├╠├
  180. 1395: ┴─ ─3 14  179           ╠─┴   ┴╘╘╥╠╧
  181. 1398: 69 50     180           ┴─├   #$50
  182. 139┴: 8─ ─3 14  181           ╙╘┴   ┴╘╘╥╠╧
  183. 139─: ┴─ ─2 14  182           ╠─┴   ┴╘╘╥╚╔
  184. 13┴0: 69 00     183           ┴─├   #$00
  185. 13┴2: 8─ ─2 14  184           ╙╘┴   ┴╘╘╥╚╔
  186. 13┴5: ┼8        185           ╔╬╪
  187. 13┴6: ┼4 ┼5     186           ├╨╪   ╙├╘╧╨
  188. 13┴8: ─0 ┼┴     187           ┬╬┼   ┴╘╘╥╥╧╫
  189.                 188
  190.                 189  * ╘HIS SETS THE ADDRESSES TO THE CORRECT COLUMN
  191.                 190
  192. 13┴┴: ┴9 00     191  ┴──├╧╠   ╠─┴   #$00       ;ZERO IN ACCUMULATOR
  193. 13┴├: ├5 ┼6     192           ├═╨   ╙├╠╞       ;IF SCREEN LEFT EQUALS ZERO
  194. 13┴┼: ╞0 22     193           ┬┼╤   ╙╔┌┼       ;THEN SKIP THIS ROUTINE
  195.                 194
  196. 13┬0: 18        195           ├╠├
  197. 13┬1: ┴─ ─1 14  196           ╠─┴   ├╚┴╥╠╧     ;GET LO BYTE
  198. 13┬4: 65 ┼6     197           ┴─├   ╙├╠╞       ;ADD COLUMN OFFSET
  199. 13┬6: 8─ ─1 14  198           ╙╘┴   ├╚┴╥╠╧     ;STORE NEW ADDRESS
  200. 13┬9: ┴─ ─0 14  199           ╠─┴   ├╚┴╥╚╔
  201. 13┬├: 69 00     200           ┴─├   #$00       ;ADD CARRY IF SET
  202. 13┬┼: 8─ ─0 14  201           ╙╘┴   ├╚┴╥╚╔
  203. 13├1: 18        202           ├╠├
  204. 13├2: ┴─ ─3 14  203           ╠─┴   ┴╘╘╥╠╧
  205. 13├5: 65 ┼6     204           ┴─├   ╙├╠╞
  206. 13├7: 8─ ─3 14  205           ╙╘┴   ┴╘╘╥╠╧
  207. 13├┴: ┴─ ─2 14  206           ╠─┴   ┴╘╘╥╚╔
  208. 13├─: 69 00     207           ┴─├   #$00
  209. 13├╞: 8─ ─2 14  208           ╙╘┴   ┴╘╘╥╚╔
  210.                 209
  211.                 210
  212.                 211  * ─ETERMINE SCREEN SIZE IN ROWS AND COLS
  213.                 212
  214. 13─2: 20 5┬ ├├  213  ╙╔┌┼     ╩╙╥   ╙├╥╧╥╟     ;CALCULATE WINDOW SIZE
  215.                 214                            ;IN ROWS AND COLS
  216.                 215                            ;HAVE TO ADD 1 TO THE RESULT
  217.                 216                            ;BECAUSE THE ROW/COL #S
  218.                 217                            ;START WITH ZERO
  219. 13─5: ├8        218           ╔╬┘              ;
  220. 13─6: 8├ ─7 14  219           ╙╘┘   ╚┼╔╟╚╘     ;STORE # OF ROWS
  221. 13─9: ┼8        220           ╔╬╪              ;
  222. 13─┴: 8┼ ─6 14  221           ╙╘╪   ╫╔─╘╚      ;STORE # OF COLS
  223.                 222
  224.                 223
  225.                 224  * SAVES WINDOW CONTENTS TO BUFFER
  226.                 225
  227. 13──: 20 07 14  226  ╙┴╓┼     ╩╙╥   ╔╬╔╘       ;CALL INIT TO ZERO COUNTERS
  228.                 227                            ;AND POINTERS
  229. 13┼0: 20 16 14  228           ╩╙╥   ├╚┴╥       ;PUT ADDRESS OF CHAR INFO IN VDC
  230. 13┼3: 20 47 14  229           ╩╙╥   ╥┼┴─       ;READ CHAR INFO
  231. 13┼6: ┴9 00     230           ╠─┴   #$00       ;RESET DONE FLAG FOR ATTRIBUTE
  232. 13┼8: 8─ ─├ 14  231           ╙╘┴   ─╧╬┼       ;PASS THRU LOOP
  233. 13┼┬: 20 26 14  232           ╩╙╥   ┴╘╘╥       ;PUT ATTR ADDRESS INTO VDC
  234. 13┼┼: 20 47 14  233           ╩╙╥   ╥┼┴─       ;READ ATTR INFO
  235. 13╞1: 60        234           ╥╘╙              ;RETURN TO PROGRAM
  236.                 235
  237.                 236  * RESTORES WINDOW CONTENTS
  238.                 237
  239. 13╞2: 20 07 14  238  ╥┼╙╘╧╥┼  ╩╙╥   ╔╬╔╘       ;ALMOST THE SAME AS ╙┴╓┼
  240. 13╞5: 20 16 14  239           ╩╙╥   ├╚┴╥
  241. 13╞8: 20 61 14  240           ╩╙╥   ╫╥╔╘┼
  242. 13╞┬: ┴9 00     241           ╠─┴   #$00
  243. 13╞─: 8─ ─├ 14  242           ╙╘┴   ─╧╬┼
  244. 1400: 20 26 14  243           ╩╙╥   ┴╘╘╥
  245. 1403: 20 61 14  244           ╩╙╥   ╫╥╔╘┼
  246. 1406: 60        245           ╥╘╙
  247.                 246
  248.                 247  * INITIALIZES ROWCOUNT, COLCOUNT, AND BUFFER POINTER
  249.                 248
  250. 1407: ┴9 00     249  ╔╬╔╘     ╠─┴   #$00
  251. 1409: 8─ ─8 14  250           ╙╘┴   ╥╧╫├╧╒╬╘
  252. 140├: 8─ ─9 14  251           ╙╘┴   ├╧╠├╧╒╬╘
  253. 140╞: 8─ ─├ 14  252           ╙╘┴   ─╧╬┼
  254. 1412: ┴5 ╞┴     253           ╠─┴   ╨╧╔╬╘╠╧
  255. 1414: ┴8        254           ╘┴┘
  256. 1415: 60        255           ╥╘╙
  257.                 256
  258.                 257  * PUTS CHAR ADDRESS INTO LOCATIONS USED
  259.                 258  * BY READ/WRITE ROUTINES
  260.                 259
  261. 1416: ┴─ ─0 14  260  ├╚┴╥     ╠─┴   ├╚┴╥╚╔
  262. 1419: 8─ ─4 14  261           ╙╘┴   ╓─├╚╔
  263. 141├: ┴─ ─1 14  262           ╠─┴   ├╚┴╥╠╧
  264. 141╞: 8─ ─5 14  263           ╙╘┴   ╓─├╠╧
  265. 1422: 20 36 14  264           ╩╙╥   ╒╨─┴╘┼
  266. 1425: 60        265           ╥╘╙
  267.                 266
  268.                 267  * PUTS ATTR ADDRESS INTO LOCATIONS USED
  269.                 268  * BY READ/WRITE ROUTINES
  270.                 269
  271. 1426: ┴─ ─2 14  270  ┴╘╘╥     ╠─┴   ┴╘╘╥╚╔
  272. 1429: 8─ ─4 14  271           ╙╘┴   ╓─├╚╔
  273. 142├: ┴─ ─3 14  272           ╠─┴   ┴╘╘╥╠╧
  274. 142╞: 8─ ─5 14  273           ╙╘┴   ╓─├╠╧
  275. 1432: 20 36 14  274           ╩╙╥   ╒╨─┴╘┼
  276. 1435: 60        275           ╥╘╙
  277.                 276
  278.                 277  * SEND ADDRESS CONTAINED IN
  279.                 278  * VDCHI AND VDCLO TO VDC
  280.                 279  * REGISTERS 18 AND 19
  281.                 280
  282. 1436: ┴2 12     281  ╒╨─┴╘┼   ╠─╪   #$12       ;REG 18
  283. 1438: ┴─ ─4 14  282           ╠─┴   ╓─├╚╔
  284. 143┬: 20 ├├ ├─  283           ╩╙╥   ╫╥╔╘┼╥┼╟
  285. 143┼: ┴2 13     284           ╠─╪   #$13       ;REG 19
  286. 1440: ┴─ ─5 14  285           ╠─┴   ╓─├╠╧
  287. 1443: 20 ├├ ├─  286           ╩╙╥   ╫╥╔╘┼╥┼╟
  288. 1446: 60        287           ╥╘╙
  289.                 288
  290.                 289  * READS THE VDC INFO INTO THE BUFFER AREA
  291.                 290
  292. 1447: ┴2 1╞     291  ╥┼┴─     ╠─╪   #$1╞       ;SET REG 31
  293. 1449: 20 ─┴ ├─  292           ╩╙╥   ╥┼┴─╥┼╟    ;GET VALUE FROM VDC RAM INTO ACC
  294. 144├: ┴2 ╞┴     293           ╠─╪   #╨╧╔╬╘╠╧   ;PUT POINTER IN X REG
  295. 144┼: 8┼ ┬9 02  294           ╙╘╪   $2┬9       ;MOVE POINTER
  296. 1451: ┴2 01     295           ╠─╪   #$01       ;BANK NUMBER
  297. 1453: 20 77 ╞╞  296           ╩╙╥   ╙╘┴╠╧╬╟    ;PUT BYTE THERE
  298.                 297
  299. 1456: 20 78 14  298           ╩╙╥   ╘┼╙╘       ;GO DO OUR HOUSEKEEPING
  300.                 299
  301. 1459: ┴9 01     300           ╠─┴   #$01       ;TEST TO SEE IF WE ARE THRU
  302. 145┬: ├─ ─├ 14  301           ├═╨   ─╧╬┼       ;
  303. 145┼: ─0 ┼7     302           ┬╬┼   ╥┼┴─       ;IF NOT GO GET ANOTHER BYTE
  304. 1460: 60        303           ╥╘╙              ;IF THRU GO BACK
  305.                 304
  306.                 305
  307.                 306  * WRITES THE BUFFER BACK INTO THE VDC
  308.                 307
  309. 1461: ┴9 ╞┴     308  ╫╥╔╘┼    ╠─┴   #╨╧╔╬╘╠╧   ;SAME LOGIC AS ╥┼┴─
  310. 1463: ┴2 01     309           ╠─╪   #$01       ;EXCEPT THAT WE ARE SENDING DATA
  311. 1465: 20 74 ╞╞  310           ╩╙╥   ╠─┴╠╧╬╟    ;TO THE VDC
  312. 1468: ┴2 1╞     311           ╠─╪   #$1╞
  313. 146┴: 20 ├├ ├─  312           ╩╙╥   ╫╥╔╘┼╥┼╟
  314.                 313
  315. 146─: 20 78 14  314           ╩╙╥   ╘┼╙╘
  316.                 315
  317. 1470: ┴9 01     316           ╠─┴   #$01
  318. 1472: ├─ ─├ 14  317           ├═╨   ─╧╬┼
  319. 1475: ─0 ┼┴     318           ┬╬┼   ╫╥╔╘┼
  320. 1477: 60        319           ╥╘╙
  321.                 320
  322.                 321  * PREFORMS CHECKS FOR THE ╥┼┴─ AND ╫╥╔╘┼ ROUTINES
  323.                 322
  324. 1478: ├8        323  ╘┼╙╘     ╔╬┘              ;INCREMENT POINTER
  325. 1479: ┼┼ ─9 14  324           ╔╬├   ├╧╠├╧╒╬╘   ;INCREMENT COLUMN COUNT
  326. 147├: ├├ ─┴ 14  325           ├╨┘   ┬╒╞╞╠╧     ;HAS Y ROLLED OVER TO = BUFFLO?
  327. 147╞: ─0 02     326           ┬╬┼   :┼╬─╥╧╫    ;IF NOT GOTO END OF ROW CHECK
  328. 1481: ┼6 ╞┬     327           ╔╬├   $╞┬        ;IF Y HAS ROLLED OVER, THEN
  329.                 328                            ;WE INCREMENT THE HI BYTE
  330.                 329                            ;OF THE POINTER
  331.                 330
  332. 1483: ┴─ ─6 14  331  :┼╬─╥╧╫  ╠─┴   ╫╔─╘╚      ;PUT WIDTH IN ACC
  333. 1486: ├─ ─9 14  332           ├═╨   ├╧╠├╧╒╬╘   ;COMPARE WITH WIDTH
  334. 1489: ─0 24     333           ┬╬┼   :╥┼╘╒╥╬    ;IF NOT DONE WITH THIS ROW
  335.                 334                            ;THEN GO BACK AND GET ANOTHER
  336.                 335                            ;CHARACTER
  337.                 336
  338. 148┬: ┼┼ ─8 14  337           ╔╬├   ╥╧╫├╧╒╬╘   ;IF IT FALLS THRU THE ROW IS
  339. DONE
  340. 148┼: ┴─ ─7 14  338           ╠─┴   ╚┼╔╟╚╘     ;PUT HEIGHT IN ACC
  341. 1491: ├─ ─8 14  339           ├═╨   ╥╧╫├╧╒╬╘   ;COMPARE WITH ROWCOUNT
  342. 1494: ╞0 1┴     340           ┬┼╤   :┼╪╔╘       ;IF EQUAL WE ARE DONE
  343.                 341
  344. 1496: ┴9 00     342           ╠─┴   #$00       ;WE WEREN'T DONE SO WE
  345. 1498: 8─ ─9 14  343           ╙╘┴   ├╧╠├╧╒╬╘   ;HAVE TO RESET THE COLUMN COUNT
  346.                 344
  347. 149┬: 18        345           ├╠├              ;AND INCREMENT THE ADDRESS WE
  348. ARE
  349. 149├: ┴9 50     346           ╠─┴   #$50       ;WE ARE READING FROM BY 80
  350. 149┼: 6─ ─5 14  347           ┴─├   ╓─├╠╧
  351. 14┴1: 8─ ─5 14  348           ╙╘┴   ╓─├╠╧
  352. 14┴4: ┴9 00     349           ╠─┴   #$00
  353. 14┴6: 6─ ─4 14  350           ┴─├   ╓─├╚╔
  354. 14┴9: 8─ ─4 14  351           ╙╘┴   ╓─├╚╔
  355. 14┴├: 20 36 14  352           ╩╙╥   ╒╨─┴╘┼     ;SEND THE NEXT ROWS START
  356. ADDRESS
  357.                 353                            ;TO THE VDC CHIP
  358.                 354
  359. 14┴╞: 60        355  :╥┼╘╒╥╬  ╥╘╙              ;GO BACK FOR ANOTHER ROW
  360.                 356
  361. 14┬0: ┴9 00     357  :┼╪╔╘    ╠─┴   #$00       ;RESET THE COUNTERS TO ZERO
  362. 14┬2: 8─ ─8 14  358           ╙╘┴   ╥╧╫├╧╒╬╘   ;OR ELSE WHE WE COME BACK
  363. 14┬5: 8─ ─9 14  359           ╙╘┴   ├╧╠├╧╒╬╘   ;WE WILL KEEP READING
  364.                 360                            ;TIL THE COUNT WRAPS BACK
  365.                 361
  366. 14┬8: ┴9 01     362           ╠─┴   #$01       ;PUT A ONE IN ─╧╬┼ SO
  367. 14┬┴: 8─ ─├ 14  363           ╙╘┴   ─╧╬┼       ;WE CAN TEST TO SEE IF WE
  368. FINISHED
  369.                 364                            ;THIS PASS
  370. 14┬─: 60        365           ╥╘╙              ;GO BACK
  371. 14┬┼: ┼┴        366           ╬╧╨
  372. 14┬╞: ┼┴        367           ╬╧╨
  373. 14├0: ┼┴        368           ╬╧╨
  374.                 369
  375.                 370  * RESETS ╓─├ CONFIGURATION FOR 64╦ MEMORY
  376.                 371  * CALL WITH SYS 5313
  377.                 372
  378. 14├1: ┴2 1├     373           ╠─╪   #$1├       ;SET REG 28
  379. 14├3: 20 ─┴ ├─  374           ╩╙╥   ╥┼┴─╥┼╟    ;READ CURRENT VALUE
  380. 14├6: 09 10     375           ╧╥┴   #$10       ;SET BIT 4, IF NOT SET ALREADY
  381. 14├8: 20 ├├ ├─  376           ╩╙╥   ╫╥╔╘┼╥┼╟   ;WRITE IT BACK
  382. 14├┬: 20 0├ ├┼  377           ╩╙╥   ╔╬╔╘80     ;REINITIALIZE CHARACTER SET
  383. 14├┼: 60        378           ╥╘╙
  384.                 379
  385.                 380  * DATA STORAGE
  386.                 381
  387.                 382  ─┴╘┴
  388.                 383
  389.                 384           ─╒═   ─┴╘┴       ;DATA LOCATIONS
  390.                 385
  391. 14├╞: 00        386  ╙├┴──╥   ─╞┬   0
  392. 14─0: 00        387  ├╚┴╥╚╔   ─╞┬   0
  393. 14─1: 00        388  ├╚┴╥╠╧   ─╞┬   0
  394. 14─2: 00        389  ┴╘╘╥╚╔   ─╞┬   0
  395. 14─3: 00        390  ┴╘╘╥╠╧   ─╞┬   0
  396. 14─4: 00        391  ╓─├╚╔    ─╞┬   0
  397. 14─5: 00        392  ╓─├╠╧    ─╞┬   0
  398. 14─6: 00        393  ╫╔─╘╚    ─╞┬   0
  399. 14─7: 00        394  ╚┼╔╟╚╘   ─╞┬   0
  400. 14─8: 00        395  ╥╧╫├╧╒╬╘ ─╞┬   0
  401. 14─9: 00        396  ├╧╠├╧╒╬╘ ─╞┬   0
  402. 14─┴: 00        397  ┬╒╞╞╠╧   ─╞┬   0
  403. 14─┬: 00        398  ┬╒╞╞╚╔   ─╞┬   0
  404. 14─├: 00        399  ─╧╬┼     ─╞┬   0
  405.                 400
  406.                 401           ─┼╬─
  407.  
  408.  
  409. --┼ND ═ERLIN-128 ASSEMBLY, 463 BYTES, ┼RRORS: 0
  410.  
  411.  
  412. ╙YMBOL TABLE - ALPHABETICAL ORDER:
  413.  
  414.    ┴──├╧╠  =$13┴┴      ┴╘╘╥    =$1426      ┴╘╘╥╚╔  =$14─2      ┴╘╘╥╠╧  =$14─3
  415.    ┴╘╘╥╥╧╫ =$1394      ┬╒╞╞╚╔  =$14─┬      ┬╒╞╞╠╧  =$14─┴      ├╚┴╥    =$1416
  416.    ├╚┴╥╚╔  =$14─0      ├╚┴╥╠╧  =$14─1      ├╚┴╥╥╧╫ =$137├      ├╠╥     =$51╞8
  417.    ├╧╠├╧╒╬╘=$14─9      ─┴╘┴    =$14├╞      ─╧╬┼    =$14─├      ╞╠┴╟    =$╞├
  418.    ╚┼╔╟╚╘  =$14─7      ╔╬╔╘    =$1407      ╔╬╔╘80  =$├┼0├      ╠─┴╠╧╬╟ =$╞╞74
  419.    ╨╧╔╬╘╚╔ =$╞┬        ╨╧╔╬╘╠╧ =$╞┴        ╥┼┴─    =$1447      ╥┼┴─╥┼╟ =$├──┴
  420.    ╥┼╙╘╧╥┼ =$13╞2      ╥╧╫├╧╒╬╘=$14─8   ?  ╙┴╓┼    =$13──      ╙├┴──╥  =$14├╞
  421.    ╙├╠╞    =$┼6        ╙├╥╧╥╟  =$├├5┬      ╙├╘╧╨   =$┼5        ╙╔┌┼    =$13─2
  422.    ╙╘┴╠╧╬╟ =$╞╞77      ╙╘┴╥╘   =$1354      ╘┼╙╘    =$1478      ╒╨─┴╘┼  =$1436
  423.    ╓─├╚╔   =$14─4      ╓─├╠╧   =$14─5      ╓═3     =$0┴2┼      ╓═4     =$0┴2╞
  424.    ╫╔─╘╚   =$14─6      ╫╥╔╘┼   =$1461      ╫╥╔╘┼╥┼╟=$├─├├
  425.  
  426.  
  427. ╙YMBOL TABLE - NUMERICAL ORDER:
  428.  
  429.    ╙├╘╧╨   =$┼5        ╙├╠╞    =$┼6        ╨╧╔╬╘╠╧ =$╞┴        ╨╧╔╬╘╚╔ =$╞┬
  430.    ╞╠┴╟    =$╞├        ╓═3     =$0┴2┼      ╓═4     =$0┴2╞      ╙╘┴╥╘   =$1354
  431.    ├╚┴╥╥╧╫ =$137├      ┴╘╘╥╥╧╫ =$1394      ┴──├╧╠  =$13┴┴      ╙╔┌┼    =$13─2
  432. ?  ╙┴╓┼    =$13──      ╥┼╙╘╧╥┼ =$13╞2      ╔╬╔╘    =$1407      ├╚┴╥    =$1416
  433.    ┴╘╘╥    =$1426      ╒╨─┴╘┼  =$1436      ╥┼┴─    =$1447      ╫╥╔╘┼   =$1461
  434.    ╘┼╙╘    =$1478      ─┴╘┴    =$14├╞      ╙├┴──╥  =$14├╞      ├╚┴╥╚╔  =$14─0
  435.    ├╚┴╥╠╧  =$14─1      ┴╘╘╥╚╔  =$14─2      ┴╘╘╥╠╧  =$14─3      ╓─├╚╔   =$14─4
  436.    ╓─├╠╧   =$14─5      ╫╔─╘╚   =$14─6      ╚┼╔╟╚╘  =$14─7      ╥╧╫├╧╒╬╘=$14─8
  437.    ├╧╠├╧╒╬╘=$14─9      ┬╒╞╞╠╧  =$14─┴      ┬╒╞╞╚╔  =$14─┬      ─╧╬┼    =$14─├
  438.    ├╠╥     =$51╞8      ╙├╥╧╥╟  =$├├5┬      ╫╥╔╘┼╥┼╟=$├─├├      ╥┼┴─╥┼╟ =$├──┴
  439.    ╔╬╔╘80  =$├┼0├      ╠─┴╠╧╬╟ =$╞╞74      ╙╘┴╠╧╬╟ =$╞╞77
  440.  
  441.  
  442.  
  443.